import {QueryPage} from "@/api/common/type.ts";

// 材料单价导入结果
export interface MaterialPriceImportResult {
    success: boolean,           // 导入是否成功
    totalCount: number,         // 总记录数
    successCount: number,       // 成功更新数
    failCount: number,          // 失败记录数
    errorList: MaterialPriceImportError[],  // 失败记录详情
    message: string             // 导入结果消息
}

// 材料单价导入错误信息
export interface MaterialPriceImportError {
    rowIndex: number,           // 行号
    selectPrice: string,        // 材料查询辅助项
    errorMessage: string,       // 错误原因
    errorType: string           // 错误类型
}

export interface Material{
    id: number | undefined,
    materialCode?: string | undefined,  // 物料编码，系统自动生成
    materialName: string | undefined,  // 物料名称
    categoryId: number | undefined,  // 物料类型
    categoryName: string | undefined,  // 物料类型名称
    unitId: number | undefined,   // 计量单位
    unitName?: string | undefined,  // 计量单位名称
    specification: string | undefined,  // 规格
    specificationTwo: string | undefined,  // 规格2
    number: number | undefined,  // 数量
    brand: string | undefined,  // 品牌
    manufacturer: string | undefined,  // 生产厂家
    price: number | undefined,  // 采购价格
    purchasePrice: number | undefined,  // 采购单价
    materialModel: string | undefined,  // 物料型号
    materialType: string | undefined,  // 材质
    unitWeight: number | undefined,  // 米重(kg/m)
    unitArea: number | undefined,  // 米面积(m²/m)
    totalArea: number | undefined,  // 总面积(m²/件)
    totalWeight: number | undefined,  // 总重(kg/件)
    thickness: number | undefined, // 厚度(mm)
    length: number | undefined,  // 长度
    breadth: number | undefined, // 宽度
    weldingLength: number | undefined, // 焊接长度(m)
    imageUrl: string | undefined,  // 图片地址
    process: string | undefined,  // 工艺
    mileagePrice: number | undefined,  // 人工公里数单价
    unitPriceCoefficient: number | undefined,  // 单价索取系数
    materialRequisitionCoefficient: number | undefined,  // 材料索取系数
    selectPrice?: string | undefined, // 材料查询辅助项
    isActive: number | undefined,  // 物料是否启用，0: 启用，1: 禁用
    createTime: string | undefined,  // 创建时间
    updateTime: string | undefined,  // 更新时间
    fileList?: any[] // 用于文件上传，不传递到后端
}
// 分页查询物料信息列表请求
export interface MaterialListParam extends QueryPage{
    materialCode: string | undefined,
    materialName: string | undefined,
    categoryId: number | undefined,
    categoryName: string | undefined,  // 物料分类名称 - 新增用于模糊查询
    brand: string | undefined,
    manufacturer: string | undefined,
    materialModel: string | undefined,  // 物料型号
    materialType: string | undefined,  // 材质
    isActive: number | undefined,  // 是否启用
}

// 物料自定义导出请求
export interface MaterialExportRequest {
    fields: string[],  // 需要导出的字段列表
    searchParam?: MaterialListParam,  // 查询条件
    selectedIds?: number[]  // 选中的物料ID列表（用于勾选导出）
}

// 导出字段
export interface ExportField {
    fieldName: string,
    displayName: string
}

// 物料导入结果
export interface MaterialImportResult {
    success: boolean,           // 导入是否成功
    totalCount: number,         // 总记录数
    successCount: number,       // 成功导入数
    failCount: number,          // 失败记录数
    insertCount: number,        // 新增记录数
    updateCount: number,        // 更新记录数
    failureDetails: MaterialImportError[],  // 失败记录详情
    message: string             // 导入结果消息
}

// 物料导入错误信息
export interface MaterialImportError {
    rowNumber: number,          // 行号
    materialCode: string,       // 物料编码
    materialName: string,       // 物料名称
    errorMessage: string,       // 错误原因
    errorType: string          // 错误类型
}
